The present invention relates generally to methods and systems for assisting in the selection of program corrections and modifications for installation on computer systems.
Computer program development does not stop when computer programs are placed on the market. Continued testing and feedback from users leads to the discovery of defects that are fixed through the release of program patches. New versions of operating systems create new incompatibilities which must be addressed and corrected, and new versions of programs may also necessitate the patching of existing programs. In between the release of major new versions of programs, minor modifications and “bug fixes” are typically made by the software developer in the form of software patches which are accessible for installation by users.
Patches are typically filesets of modified program files which overlay and thereby replace some or all of the existing program files and thereby upgrade a previously installed program. Patches are created and distributed as one or more filesets, but sometimes, to save space and to speed downloads, they may be compressed in various ways prior to distribution. Thus, existing program files may be patched or repaired and not completely replaced in some cases.
Many programs come in multiple modified versions each of which conforms to a particular operating system or hardware platform or both. The differing versions of such programs require differing versions of matching patches. Thus, patches may be labeled as to their operating system and hardware platform compatibility.
Patches are frequently superseded by successor patches which are released with additional new program corrections and modifications. Some patches correct critical errors or security errors, and these are typically identified as such, while other patches may correct very minor or cosmetic defects. Some patches are developed to provide special features or to overcome very specific problems faced by some users but not by others. And in situations where several programs interact, it may not be possible to install a first patch to one program without simultaneously installing other compatible patches to other cooperating programs. Such a first patch is said to be dependent upon the other patches.
All of the above makes it clear that a patch library maintained for the benefit of the users of a particular type of computer may contain thousands of individual patches many of them quite similar to each other. It can take many hours to review manually all of the possible patches that are candidates for installation on a given system and to select which ones to actually install.
To aid in patch selection, various kinds of automated patch assessment and recommendation systems have been developed. One such system begins by having a script file executed on a target computer system (the system that is to be patched). This script file reads a registry of the operating system, programs, and patches already installed on the computer system and generates a “Product Specific Information” file containing this information. This information is compared to that contained in a patch information database, and based on this comparison a set of patches is selected for, consideration. Next, any installed but bad patches are identified, and successor patches for patches previously installed are normally selected if they are available. Dependencies are also identified, and additional patches are selected as needed to satisfy these dependencies.
Another existing automated patch selection system can search through a patch database and select patches containing only the most critical updates. This system selects the earliest-to-be-released (and therefore the most thoroughly tested) patches that include any particular critical update rather than always selecting the most recently released patches, the goal being to maximize system stability, rather than to install the latest modifications.
Another existing system rates individual patches for reliability and then selects the most current set of patches that is reliable, avoiding any new patches that have not been sufficiently tested.
These prior systems proceed, in essence, by automating the tasks performed by a field engineer who examines a computer system, reviews the available patches, and then selects patches for installation. Each of these prior systems was hard coded to be prioritized in a certain way—to prioritize installing the most up-to-date patches, to prioritize installing only the earliest of patches correcting critical defects, or to prioritize installing only reliable patches. Thus, each of these systems suited the needs of some computer systems but not necessarily those of other computer systems. And altering the built-in priorities of these systems would require a major amount of software redesign. A more flexible approach to automated patch assessment would be desirable.